home *** CD-ROM | disk | FTP | other *** search
/ CD Ware Multimedia 1994 November / Cd Ware (Nro. 2) - Epimundo.iso / DOS / PG / CL_STYLE.ZIP / DOSLIB03.CLA < prev    next >
Encoding:
Text File  |  1994-03-13  |  31.1 KB  |  730 lines

  1.                  Member('DOSLIB')
  2.                  Eject('Program Identification Section')
  3. !
  4. !  ┌──────────────────────┐
  5. !  │Program Identification├──────────────────────────────────────────────────────
  6. !  └──────────────────────┘
  7. !
  8. !  Program Name           : Colors.Cla
  9. !  Program Description    : Allows Modification of Styles Files
  10. !  Version                : 1.00a
  11. !  Date                   : 18 November 1993
  12. !  Programmer             : Trevor G. Leybourne
  13. !
  14. !  ┌──────────────────────┐
  15. !  │Invocation Structure  ├─────────────────────────────────────────────────────
  16. !  └──────────────────────┘
  17. !
  18. !  Functions Called       : ViewStyles     - Views the Styles in the File
  19. !                         : PreviewStyles  - Previews the Selected Colors
  20. !                         : GetStyleFile   - Prompts User for Filename
  21. !                         : EditColors     - Allows Editing of the Colors
  22. !                         : ChangeColors   - Allows Selection of New Color
  23. !                         : GetColorDesc   - Returns a Description of a Color
  24. !                         : LoadStylesFile - Loads the Styles From Disk
  25. !                         : SaveStylesFile - Saves the Styles to Disk
  26. !
  27. !  ┌──────────────────────┐
  28. !  │Input/Output          ├─────────────────────────────────────────────────────
  29. !  └──────────────────────┘
  30. !
  31. !  Datafiles Read         : <StylesFile.STY> - Styles File - ASCII Driver
  32. !  Datafiles Updated      : <StylesFile.STY> - Styles File - ASCII Driver
  33. !
  34. !  ┌──────────────────────┐
  35. ! ┌┤Functional Description├────────────────────────────────────────────────────┐
  36. ! │└──────────────────────┘                                                    │
  37. ! │                                                                            │
  38. ! │ This program is based on the Clarion CDD Environment Style File Editor.    │
  39. ! │ It allows the user to Load a Style File from disk, change it and write it  │
  40. ! │ back.                                                                      │
  41. ! │                                                                            │
  42. ! │ Please Note: The procedure CHANGECOLORS was not written by myself, but     │
  43. ! │              by another author to whom I am unable to give credit to as    │
  44. ! │              I am unaware of this persons name. This source was found      │
  45. ! │              on the public domain.                                         │
  46. ! │                                                                            │
  47. ! └────────────────────────────────────────────────────────────────────────────┘
  48. !
  49. !  ┌──────────────────────┐
  50. ! ┌┤Modification History  ├────────────────────────────────────────────────────┐
  51. ! │└──────────────────────┘                                                    │
  52. ! │ Ver. Date           Programmer               Summary of Changes            │
  53. ! ├────────────────────────────────────────────────────────────────────────────┤
  54. ! │                                                                            │
  55. ! │ 1.01 18-Nov-1993    Trevor G. Leybourne      Original Production Version   │
  56. ! │                                                                            │
  57. ! └────────────────────────────────────────────────────────────────────────────┘
  58. !
  59.                  Map
  60.                    PreviewStyles
  61.                    EditColors
  62.                    ChangeColors(*Byte)
  63.                    GetColorDesc(Byte,Byte),String
  64.                    DisplayColorDesc(Byte,Byte,Byte)
  65.                    LoadStylesFile
  66.                    SaveStylesFile
  67.                  .
  68.  
  69. OMIT('╝')
  70. ╔════════════════════════════════════════════════════════════════════════════╗
  71. ║ Global Data Declarations                                                   ║
  72. ╚════════════════════════════════════════════════════════════════════════════╝
  73.  
  74. StyleFileName    String(64)                      ! Filename for Styles File
  75. StyleSave        String(256)                     ! Temporary Store of Styles Info
  76. StyleString      String(256)                     ! Style Information
  77. StyleArray       Byte,Dim(256),Over(StyleString) ! Byte Redeclaration of Style
  78.  
  79. Colors:Queue     Queue                           ! Queue to Hold Style Info
  80. Colors:Number      Byte                          !   Style Number
  81. Colors:ColorCode   Byte                          !   Color Code
  82. Colors:MonoCode    Byte                          !   Mono Code
  83. Colors:Desc        String(50)                    !   Description of Style
  84.                  .                               ! End of Queue
  85.  
  86. Comment:Queue    Queue                           ! Queue to Hold Style Comments
  87. Comment:Desc       String(55)                    !   Description
  88.                  .                               ! End of Queue
  89.  
  90. StylesFile       File,Create,Pre(Sty),Driver('ASCII'),Name(StyleFileName)
  91. Record           Record
  92. StyleRecord        String(80)
  93.                  . .
  94.  
  95. OMIT('╝')
  96. ╔════════════════════════════════════════════════════════════════════════════╗
  97. ║ ViewStyles - Displays the Styles on Screen for Possible Editing            ║
  98. ╚════════════════════════════════════════════════════════════════════════════╝
  99.  
  100. ViewStyles       PROCEDURE(Default:FileName)
  101. ViewColors       SCREEN(23,48),SHADOW,EXPAND(9),ZOOM,CUA,COLOR(1)
  102.                    !dimensions=25,80,25,80
  103.                    !style=D:\CLARION\DEVELOP\DOSLIB\CLARION.STY
  104.                    ROW(3,2)    PAINT(18,2),COLOR(112)
  105.                    ROW(4,46)   PAINT(14,2),COLOR(112)
  106.                    ROW(17,4)   PAINT(1,42),COLOR(112)
  107.                    ROW(18,10)  PAINT(3,1),COLOR(112)
  108.                    ROW(18,47)  PAINT(3,1),COLOR(112)
  109.                    ROW(20,4)   PAINT(1,6),COLOR(112)
  110.                    ROW(20,11)  PAINT(1,36),COLOR(112)
  111.                    ROW(21,2)   PAINT(2,1),COLOR(112)
  112.                    ROW(21,24)  PAINT(1,2),COLOR(112)
  113.                    ROW(1,1)    STRING('█{16}'),COLOR(3)
  114.                      COL(17)   STRING('Edit Styles File'),COLOR(31)
  115.                      COL(33)   STRING('█{16}'),COLOR(3)
  116.                    ROW(18,4)   STRING('Color:'),COLOR(112)
  117.                    ROW(19,4)   STRING('Mono :'),COLOR(112)
  118.                    ROW(23,1)   STRING('█▄{46}█'),COLOR(3)
  119.                                REPEAT(21)
  120.                    ROW(2,1)      STRING('█'),COLOR(3)
  121.                    ROW(2,48)     STRING('█'),COLOR(3)
  122.                                .
  123.                    ROW(5,4)    LIST(12,42),FROM(Colors:Desc),HVSCROLL,USE(?ViewColors:ListBox),IMM,COLOR(21,22,68)
  124. DispFileName       ROW(3,4)    STRING(@s42),COLOR(8)
  125.                    ROW(21,4)   BUTTON('   &Ok   |'),SHADOW,KEY(CtrlEnter),USE(?ViewColors:Ok),COLOR(17,18,39,19,20)
  126.                      COL(15)   BUTTON(' &Cancel |'),SHADOW,KEY(EscKey),USE(?ViewColors:Cancel),COLOR(17,18,39,19,20)
  127.                      COL(26)   BUTTON(' &Change |'),SHADOW,KEY(EnterKey),USE(?ViewColors:Change),COLOR(17,18,39,19,20)
  128.                      COL(37)   BUTTON(' &Preview '),SHADOW,KEY(AltP),USE(?ViewColors:Preview),COLOR(17,18,39,19,20)
  129. ViewColors:Color   ROW(18,11)  STRING(@s35),COLOR(1)
  130. ViewColors:Mono    ROW(19,11)  STRING(@s35),COLOR(1)
  131.                  .
  132.  
  133.                  Code
  134.                  If ~Omitted(1) then StyleFileName = Default:Filename.
  135.                  If Clip(StyleFileName) = '' then
  136.                     StyleFileName = GetFileDetails('CLARION.STY','Style File','*.STY')
  137.                  .
  138.                  If Clip(StyleFileName) = '' Then Return.
  139.                  GetStyles(StyleFileName)
  140.                  LoadStylesFile()
  141.  
  142.                  StyleString    = Styles()
  143.                  SelectedStyle# = 1
  144.                  Open(ViewColors)
  145.                  SetMouse(1,1)
  146.  
  147.                  DispFileName = Center(Left(Clip(StyleFileName)),Size(DispFileName))
  148.                  Loop
  149.                    Case Selected()
  150.                    Of ?ViewColors:ListBox
  151.                       Get(Colors:Queue,SelectedStyle#)
  152.                       DisplayColorDesc(Row(ViewColors:Color),Col(ViewColors:Color),Colors:ColorCode)
  153.                       DisplayColorDesc(Row(ViewColors:Mono) ,Col(ViewColors:Mono) ,Colors:MonoCode)
  154.                    .
  155.  
  156.                    Accept
  157.                    Case Field()
  158.                    Of ?ViewColors:ListBox
  159.                       If Keycode()   = MouseLeft2 then Press(EnterKey).
  160.                       SelectedStyle# = Choice()
  161.  
  162.                    Of ?ViewColors:Ok
  163.                       SaveStylesFile()
  164.                       Break
  165.  
  166.                    Of ?ViewColors:Cancel
  167.                       Break
  168.  
  169.                    Of ?ViewColors:Change
  170.                       SelectedStyle# = Choice()
  171.                       Get(Colors:Queue,SelectedStyle#)
  172.                       If Error() then Stop('Error:'&Error()).
  173.                       EditColors()
  174.                       Close(ViewColors)
  175.                       Open(ViewColors)
  176.                       Select(?ViewColors:ListBox,SelectedStyle#)
  177.  
  178.                    Of ?ViewColors:Preview
  179.                       PreviewStyles()
  180.                  . .
  181.                  GetStyles(StyleFileName)
  182.                  Return
  183.  
  184. OMIT('╝')
  185. ╔════════════════════════════════════════════════════════════════════════════╗
  186. ║ PreviewStyle - Shows the User a Preview of the Select Styles               ║
  187. ╚════════════════════════════════════════════════════════════════════════════╝
  188.  
  189. PreviewStyles    PROCEDURE
  190.  
  191. Preview:Entry    String('Data Entry Field')
  192. Preview:Disabled String('Disabled Entry Field')
  193. Preview:Check1   Byte
  194. Preview:Check2   Byte
  195. Preview:Radio1   String(1)
  196.  
  197. PreviewPullDown    PULLDOWN,COLOR(44,45,49,46,52),HALF(51),SHADOW
  198.           !style=CLARION.STY
  199.           MENU('Sample Menu'),COLOR(47,48,49,50,51)
  200.             ITEM('Menu Item 1'),USE(?Preview:Item_1)
  201.             ITEM('Menu &Item 2'),USE(?Preview:Item_2)
  202.           .
  203.           MENU('Exit'),USE(?Preview:Exit_PD),COLOR(47,48,49,50,51)
  204.           .
  205.         .
  206.  
  207. PreviewScreen    SCREEN(16,53),SHADOW,ZOOM,CUA,COLOR(1)
  208.                    !dimensions=25,80,25,80
  209.                    !style=D:\CLARION\DEVELOP\DOSLIB\CLARION.STY
  210.                    ROW(1,1)    STRING('█{17}'),COLOR(3)
  211.                      COL(18)   STRING('Sample Screen Title'),COLOR(2)
  212.                      COL(37)   STRING('█{17}'),COLOR(3)
  213.                    ROW(16,1)   STRING('█▄{51}█'),COLOR(3)
  214.                                REPEAT(14)
  215.                    ROW(2,1)      STRING('█'),COLOR(3)
  216.                    ROW(2,53)     STRING('█'),COLOR(3)
  217.                                .
  218.                    ROW(3,6)    PROMPT('Sample Prompt:'),COLOR(4,5,40,6,7)
  219.                      COL(21)   ENTRY(@s30),USE(Preview:Entry),COLOR(8,9,38)
  220.                    ROW(4,4)    PROMPT('Disabled Prompt:'),COLOR(4,5,40,6,7)
  221.                      COL(21)   ENTRY(@s30),USE(Preview:Disabled),COLOR(8,9,38)
  222.                    ROW(7,4)    CHECK('Sample Checkbox     '),USE(Preview:Check1),COLOR(15,16,37,41,42)
  223.                    ROW(8,4)    CHECK('Disabled Checkbox   '),USE(Preview:Check2),COLOR(15,16,37,41,42)
  224.                    ROW(10,4)   PROMPT('Radio Prompt:'),COLOR(4,5,40,6,7)
  225.                                OPTION,USE(Preview:Radio1)
  226.                    ROW(11,4)     RADIO('First Radio Button  '),COLOR(15,16,37,41,42)
  227.                    ROW(12,4)     RADIO('Second Radio Button '),COLOR(15,16,37,41,42)
  228.                                .
  229.                    ROW(6,31)   PROMPT('Sample ListBox:'),COLOR(4,5,40,6,7)
  230.                    ROW(8,31)   LIST(5,20),FROM(Colors:Desc),HVSCROLL,USE(?LIST2),HIDE,COLOR(21,22,68)
  231.                    ROW(14,5)   BUTTON(' Normal &Button '),SHADOW,USE(?Preview:Button1),COLOR(17,18,39,19,20)
  232.                      COL(23)   BUTTON(' Disabled &Button '),SHADOW,USE(?Preview:Button2),COLOR(17,18,39,19,20)
  233.                      COL(43)   BUTTON(' E&xit '),SHADOW,KEY(EscKey),USE(?Preview:Exit),COLOR(17,18,39,19,20)
  234.                  .
  235.                  Code
  236.                  Open(PreviewPullDown)
  237.                  Open(PreviewScreen)
  238.                  Disable(?Preview:Check2)
  239.                  Disable(?Preview:Disabled)
  240.                  Disable(?Preview:Button2)
  241.                  Disable(?Preview:Item_2)
  242.                  Loop
  243.                    Accept
  244.                    Case Field()
  245.                    Of ?Preview:Exit_PD orof ?Preview:Exit
  246.                       Close(PreviewScreen)
  247.                       Close(PreviewPullDown)
  248.                       Break
  249.                  . .
  250.                  Return
  251.  
  252. OMIT('╝')
  253. ╔════════════════════════════════════════════════════════════════════════════╗
  254. ║ EditColors - Shows the Color/Mono Colors Selected and Allows Change        ║
  255. ╚════════════════════════════════════════════════════════════════════════════╝
  256.  
  257. EditColors       PROCEDURE
  258. EditColors       SCREEN(11,65),SHADOW,ZOOM,CUA,COLOR(1)
  259.                    !dimensions=25,80,25,80
  260.                    !style=D:\CLARION\DEVELOP\DOSLIB\CLARION.STY
  261.                    ROW(2,2)    PAINT(1,26),COLOR(112)
  262.                    ROW(2,38)   PAINT(1,27),COLOR(112)
  263.                    ROW(3,2)    PAINT(8,2),COLOR(112)
  264.                    ROW(3,20)   PAINT(2,1),COLOR(112)
  265.                    ROW(3,56)   PAINT(1,5),COLOR(126)
  266.                    ROW(3,61)   PAINT(8,4),COLOR(112)
  267.                    ROW(4,7)    PAINT(1,10),COLOR(112)
  268.                    ROW(4,56)   PAINT(1,5),COLOR(112)
  269.                    ROW(5,4)    PAINT(6,3),COLOR(112)
  270.                    ROW(5,21)   PAINT(4,1),COLOR(112)
  271.                    ROW(5,58)   PAINT(6,3),COLOR(112)
  272.                    ROW(6,20)   PAINT(1,1),COLOR(112)
  273.                    ROW(6,22)   PAINT(1,35),COLOR(112)
  274.                    ROW(8,20)   PAINT(3,1),COLOR(112)
  275.                    ROW(8,22)   PAINT(1,36),COLOR(112)
  276.                    ROW(9,7)    PAINT(2,13),COLOR(112)
  277.                    ROW(9,30)   PAINT(2,8),COLOR(112)
  278.                    ROW(9,47)   PAINT(2,11),COLOR(112)
  279.                    ROW(1,1)    STRING('█{27}'),COLOR(3)
  280.                      COL(28)   STRING('Edit Style'),COLOR(31)
  281.                      COL(38)   STRING('█{28}'),COLOR(3)
  282.                    ROW(11,1)   STRING('█▄{63}█'),COLOR(3)
  283.                                REPEAT(2),EVERY(2)
  284.                    ROW(5,20)     STRING(':'),COLOR(112)
  285.                                .
  286.                                REPEAT(9)
  287.                    ROW(2,1)      STRING('█'),COLOR(3)
  288.                    ROW(2,65)     STRING('█'),COLOR(3)
  289.                                .
  290.                    ROW(3,17)   ENTRY(@n_3),USE(Colors:Number),SKIP,COLOR(8,9,38)
  291.                      COL(4)    PROMPT('Style Code : '),COLOR(4,5,40,6,7)
  292.                      COL(21)   ENTRY(@s35),USE(Colors:Desc),COLOR(8,9,38)
  293.                    ROW(5,7)    BUTTON(' Co&lor Code '),SHADOW,KEY(AltL),USE(?EditColors:SelectColor),COLOR(17,18,39,19,20)
  294.                    ROW(7,7)    BUTTON(' &Monochrome '),SHADOW,KEY(AltM),USE(?EditColors:SelectMono),COLOR(17,18,39,19,20)
  295.                    ROW(9,21)   BUTTON('   &Ok   '),SHADOW,KEY(EnterKey),USE(?EditColors:Ok),COLOR(17,18,39,19,20)
  296.                      COL(38)   BUTTON(' &Cancel '),SHADOW,KEY(EscKey),USE(?EditColors:Cancel),COLOR(17,18,39,19,20)
  297. EditColors:Color   ROW(5,22)   STRING(@s35),COLOR(1)
  298. EditColors:Mono    ROW(7,22)   STRING(@s35),COLOR(1)
  299.                  .
  300.  
  301.                  Code
  302.                  Open(EditColors)
  303.                  Disable(?Colors:Number)
  304.                  StyleSave = Styles()
  305.                  Select(?EditColors:Ok)
  306.                  Display
  307.  
  308.                  Loop
  309.                    DisplayColorDesc(Row(EditColors:Color),Col(EditColors:Color),Colors:ColorCode)
  310.                    DisplayColorDesc(Row(EditColors:Mono) ,Col(EditColors:Mono) ,Colors:MonoCode)
  311.                    Accept
  312.                    Case Field()
  313.                    Of ?Colors:Desc
  314.                    Of ?EditColors:SelectColor
  315.                       ChangeColors(Colors:ColorCode)
  316.                    Of ?EditColors:SelectMono
  317.                       ChangeColors(Colors:MonoCode)
  318.                    Of ?EditColors:Ok
  319.                       StyleArray[Colors:Number+1] = Colors:ColorCode
  320.                       SetStyles(StyleString)
  321.                       Put(Colors:Queue)
  322.                       If Error() then Stop('Error Updating Colors Table').
  323.                       Break
  324.                    Of ?EditColors:Cancel
  325.                       SetStyles(StyleSave)
  326.                       Break
  327.                  . .
  328.                  Return
  329.  
  330. OMIT('╝')
  331. ╔════════════════════════════════════════════════════════════════════════════╗
  332. ║ ChangeColors - Allows the User to Actually Change the Specified Color      ║
  333. ╚════════════════════════════════════════════════════════════════════════════╝
  334.  
  335. ChangeColors     PROCEDURE(Change:Color)
  336.  
  337. Ndx              SHORT
  338. ColorMono        STRING(1)
  339. EnhanceBlink     BYTE
  340.  
  341. SelectColor      SCREEN(18,73),CENTER,SHADOW,ZOOM,CUA,COLOR(1)
  342.                    !dimensions=25,80,25,80
  343.                    !style=D:\CLARION\DEVELOP\DOSLIB\CLARION.STY
  344.                    ROW(1,1)    STRING('█{30}'),COLOR(3)
  345.                      COL(31)   STRING('Select Color'),COLOR(2)
  346.                      COL(43)   STRING('█{31}'),COLOR(3)
  347.                    ROW(12,2)   STRING('─{71}')
  348.                    ROW(18,1)   STRING('█▄{71}█'),COLOR(3)
  349.                                REPEAT(16)
  350.                    ROW(2,1)      STRING('█'),COLOR(3)
  351.                    ROW(2,73)     STRING('█'),COLOR(3)
  352.                                .
  353.                    ROW(4,4)    ENTRY(@p p),USE(?ColorChart),COLOR(8,9,38)
  354.                                REPEAT(4,33),EVERY(2,2),INDEX(ndx)
  355. ColorDot           ROW(4,4)      STRING(@s3),COLOR(1)
  356.                                .
  357. ShowColor          ROW(14,3)   STRING(@S35),COLOR(1)
  358.                      COL(41)   CHECK('&Enhanced/Blink Background'),USE(EnhanceBlink),COLOR(15,16,37,41,42)
  359.                    ROW(16,16)  BUTTON('    &Ok    '),SHADOW,KEY(EnterKey),USE(?Ok),COLOR(17,18,39,19,20)
  360.                      COL(48)   BUTTON('  &Cancel  '),SHADOW,KEY(EscKey),USE(?Cancel),COLOR(17,18,39,19,20)
  361.                  .
  362.  
  363. TRNSFORM_TBL GROUP                                                                 !THIS TABLE TRANSFORMS
  364.                STRING('<001,005,009,013,017,021,025,029,033,037,041,045,049,053,057,061>') ! COLUMN WITHIN ROW
  365.                STRING('<002,006,010,014,018,022,026,030,034,038,042,046,050,054,058,062>') ! COLUMN WITHIN ROW
  366.                STRING('<003,007,011,015,019,023,027,031,035,039,043,047,051,055,059,063>') ! COLUMN WITHIN ROW
  367.                STRING('<004,008,012,016,020,024,028,032,036,040,044,048,052,056,060,064>') ! COLUMN WITHIN ROW
  368.                STRING('<069,073,077,081,085,089,093,097,101,105,109,113,117,121,125,129>') ! COLUMN WITHIN ROW
  369.                STRING('<070,074,078,082,086,090,094,098,102,106,110,114,118,122,126,130>') ! COLUMN WITHIN ROW
  370.                STRING('<071,075,079,083,087,091,095,099,103,107,111,115,119,123,127,131>') ! COLUMN WITHIN ROW
  371.                STRING('<072,076,080,084,088,092,096,100,104,108,112,116,120,124,128,132>')! COLUMN WITHIN RO W
  372.              .
  373. TRANSFORM    BYTE,DIM(128),OVER(TRNSFORM_TBL)    !REDECLARE AS A BYTE ARRAY
  374. SaveStyles   String(256)
  375.  
  376.          CODE
  377.          OPEN(SelectColor)
  378.          SaveStyles = STYLES()
  379.          GetStyles('')
  380.          SETNOBLINK
  381.          SETCURSOR
  382.          DISPLAY
  383.          Ndx = 1
  384.          STROW#  = ROW(COLORDOT)
  385.          STCOL#  = COL(COLORDOT)
  386.          Ndx     = TransForm[128]
  387.          ENDROW# = ROW(ColorDot)
  388.          ENDCOL# = COL(ColorDot) + 1
  389.          LOOP I# = 1 TO SIZE(Transform[])
  390.            Ndx = TransForm[I#]
  391.            SETCOLOR(I# - 1)
  392.            ColorDot = ' <254> '
  393.          .
  394.          SETCOLOR
  395.          Ndx = TransForm[Change:Color+1]
  396.          DO ShowCursor
  397.          LOOP
  398.          ASK
  399.          CASE KEYCODE()
  400.            OF MOUSELEFT
  401.              MOUSER# = MOUSEROW()
  402.              MOUSEC# = MOUSECOL()
  403.              IF ~INRANGE(MOUSER#,STROW#,ENDROW#) OR |
  404.                 ~INRANGE(MOUSEC#,STCOL#,ENDCOL#)
  405.                 IF Mouser# = ROW(?EnhanceBlink) AND |
  406.                   INRANGE(Mousec#,COL(?EnhanceBlink), |
  407.                   COL(?EnhanceBlink)+14)
  408.                     SELECT(?EnhanceBlink)
  409.                     DO ProcessFields
  410.                     IF Complete# THEN BREAK.
  411.                 .
  412.                 IF Mouser# = ROW(?Ok) AND |
  413.                   INRANGE(Mousec#,COL(?Ok), |
  414.                   COL(?Ok)+COLS(?Ok))
  415.                     SELECT(?Ok)
  416.                     DO ProcessFields
  417.                     IF Complete# THEN BREAK.
  418.                 .
  419.                 IF Mouser# = ROW(?Cancel) AND |
  420.                   INRANGE(Mousec#,COL(?Cancel), |
  421.                   COL(?Cancel)+COLS(?Cancel))
  422.                     SELECT(?Cancel)
  423.                     DO ProcessFields
  424.                     IF Complete# THEN BREAK.
  425.                 .
  426.  
  427.              CYCLE
  428.              .
  429.              LOOP I# = 1 TO 5
  430.                IF LOOK(MOUSER#,MOUSEC#,@S1) = '■'
  431.                  DO BlankCursor
  432.                  BREAK
  433.                .
  434.                EXECUTE I#
  435.                 MOUSEC# -= 1
  436.                 BEGIN
  437.                   MOUSEC# += 1
  438.                   MOUSER# -= 1
  439.                 END
  440.                 BEGIN
  441.                   MOUSER# += 1
  442.                   MOUSEC# += 1
  443.                 END
  444.                 BEGIN
  445.                   MOUSER# += 1
  446.                   MOUSEC# -= 1
  447.                 END
  448.              . .
  449.              IF I# = 6 THEN CYCLE.
  450.              IF MOUSEC# < 40
  451.                NDX = TRANSFORM[((MOUSEC# - STCOL#) / 2) + ((MOUSER# - STROW#) * 8) + 1]
  452.              ELSE
  453.                NDX = TRANSFORM[((MOUSEC# - STCOL#) / 2) + ((MOUSER# - STROW#) * 8) + 48]
  454.              .
  455.              DO SHOWCURSOR
  456.            OF UpKey
  457.              DO BlankCursor
  458.              IF ~((NDX - 1) % 4) OR NDX = 1
  459.                NDX += 3
  460.              ELSE
  461.                NDX -= 1
  462.              .
  463.              DO ShowCursor
  464.            OF DOWNKEY
  465.              DO BlankCursor
  466.              IF ~NDX % 4
  467.                NDX -= 3
  468.              ELSE
  469.                NDX += 1
  470.              .
  471.              DO ShowCursor
  472.            OF LEFTKEY
  473.              DO BlankCursor
  474.              IF Ndx <= 4 THEN NDX += 128 ELSE NDX -= 4.
  475.              IF INRANGE(NDX,65,68) THEN NDX -= 4.
  476.              DO ShowCursor
  477.            OF RIGHTKEY
  478.              DO BlankCursor
  479.              IF NDX >= 129 THEN NDX -= 128 ELSE NDX += 4.
  480.              IF INRANGE(NDX,65,68) THEN NDX += 4.
  481.              DO ShowCursor
  482.            OF HomeKey
  483.              DO BlankCursor
  484.              EXECUTE (Ndx % 4)+1
  485.                Ndx = 4
  486.                Ndx = 1
  487.                Ndx = 2
  488.                Ndx = 3
  489.              .
  490.              DO ShowCursor
  491.            OF EndKey
  492.              DO BlankCursor
  493.              EXECUTE (Ndx % 4)+1
  494.                Ndx = 132
  495.                Ndx = 129
  496.                Ndx = 130
  497.                Ndx = 131
  498.              .
  499.              DO ShowCursor
  500.            OF ShftTab
  501.              SELECT(?Cancel)
  502.              DO ProcessFields
  503.              IF Complete# THEN BREAK.
  504.            OF TabKey
  505.              SELECT(?Ok)
  506.              DO ProcessFields
  507.              IF Complete# THEN BREAK.
  508.            OF EnterKey OROF AltO
  509.              PRESS(EnterKey)
  510.              DO ProcessFields
  511.              IF Complete# THEN BREAK.
  512.            OF EscKey OROF AltC
  513.              PRESS(EscKey)
  514.              DO ProcessFields
  515.              IF Complete# THEN BREAK.
  516.            OF AltE
  517.              SELECT(?EnhanceBlink)
  518.              DO ProcessFields
  519.              IF Complete# THEN BREAK.
  520.           .
  521.           IF Complete# THEN BREAK.
  522.        .
  523.  
  524. BlankCursor      ROUTINE
  525.  
  526.                  ForeColor#    = FORECOLOR(ROW(Colordot),COL(Colordot)+1)
  527.                  BackColor#    = BACKCOLOR(ROW(Colordot),COL(Colordot)+1)
  528.                  CurrentColor# = MAKECOLOR(ForeColor#,BackColor#)
  529.                  IF ForeColor# = BackColor#
  530.                     SETCOLOR(15+BackColor# * 16)
  531.                  ELSE
  532.                     SETCOLOR(CurrentColor#)
  533.                  .
  534.                  BLANK(ROW(ColorDot),COL(ColorDot),1,1)
  535.                  BLANK(ROW(ColorDot),COL(ColorDot)+2,1,1)
  536.                  SETCOLOR
  537.                  BLANK(ROW(ColorDot)-1,COL(ColorDot),1,3)
  538.                  BLANK(ROW(ColorDot)+1,COL(ColorDot),1,3)
  539.  
  540. ShowCursor         ROUTINE
  541.   SETCOLOR(112)
  542.   SHOW(ROW(ColorDot)-1,COL(ColorDot),'┌─┐')
  543.   SHOW(ROW(ColorDot),COL(ColorDot),'│')
  544.   SHOW(ROW(ColorDot),COL(ColorDot)+2,'│')
  545.   SHOW(ROW(ColorDot)+1,COL(ColorDot),'└─┘')
  546.   ForeColor# = FORECOLOR(ROW(Colordot),COL(Colordot)+1)
  547.   BackColor# = BACKCOLOR(ROW(Colordot),COL(Colordot)+1)
  548.   CurrentColor# = MAKECOLOR(ForeColor#,BackColor#)
  549.   IF ForeColor# = BackColor#
  550.     SETCOLOR(15+BackColor# * 16)
  551.   ELSE
  552.     SETCOLOR(CurrentColor#)
  553.   .
  554.   DisplayColorDesc(Row(ShowColor),Col(ShowColor),CurrentColor#)
  555.  
  556. ProcessFields    ROUTINE
  557.  
  558.   LOOP
  559.     CASE SELECTED()
  560.      OF ?EnhanceBlink
  561.       SaveNdx# = Ndx
  562.       IF EnhanceBlink
  563.          LOOP I# = 1 TO SIZE(Transform[])
  564.            Ndx = TransForm[I#]
  565.            SETCOLOR(I# + 127)
  566.            ColorDot = ' <254> '
  567.          .
  568.        ELSE
  569.          LOOP I# = 1 TO SIZE(Transform[])
  570.            Ndx = TransForm[I#]
  571.            SETCOLOR(I# - 1)
  572.            ColorDot = ' <254> '
  573.        . .
  574.        SETCOLOR
  575.        Ndx = SaveNdx#
  576.        DO ShowCursor
  577.     .
  578.     ACCEPT
  579.     IF KEYCODE() = MouseLeft OR KEYCODE() = MouseLeft2
  580.      MOUSER# = MOUSEROW()
  581.      MOUSEC# = MOUSECOL()
  582.      IF INRANGE(MOUSER#,STROW#,ENDROW#) AND |
  583.        INRANGE(MOUSEC#,STCOL#,ENDCOL#)
  584.       SETCURSOR
  585.       EXIT
  586.    . .
  587.     CASE FIELD()
  588.       OF ?ColorChart
  589.         EXIT
  590.       OF ?OK
  591.        Change:Color = CurrentColor#
  592.        SETSTYLES(SaveStyles)
  593.        Complete# = 1
  594.        BREAK
  595.       OF ?Cancel
  596.        SETSTYLES(SaveStyles)
  597.        Complete# = 1
  598.        BREAK
  599.   . .
  600.   CLOSE(SelectColor)
  601.   EXIT
  602. OMIT('╝')
  603. ╔════════════════════════════════════════════════════════════════════════════╗
  604. ║ LoadStylesFile - Loads the Styles File from Disk to a Table                ║
  605. ╚════════════════════════════════════════════════════════════════════════════╝
  606.  
  607. LoadStylesFile   PROCEDURE
  608.  
  609.                  Code
  610.                  Free(Colors:Queue)
  611.                  Free(Colors:Queue)
  612.  
  613.                  Open(StylesFile)
  614.                  If Error() then Stop('Error Openning File:'&StyleFileName).
  615.  
  616.                  Set(StylesFile,1)
  617.                  Loop
  618.                    Next(StylesFile)
  619.                    If Error() then Break.
  620.  
  621.                    If Sub(Sty:StyleRecord,1,1) = '!' or |
  622.                       Sub(Sty:StyleRecord,1,1) = '*' Then
  623.                       Comment:Desc = Sty:StyleRecord
  624.                       Add(Comment:Queue)
  625.                    Else
  626.                       Position#        = 1
  627.                       FindComma#       = Instring(',',Sty:StyleRecord,1,Position#)
  628.                       Colors:Number    = Sub(Sty:StyleRecord,Position#,FindComma#-Position#)
  629.  
  630.                       Position#        = FindComma# + 1
  631.                       FindComma#       = Instring(',',Sty:StyleRecord,1,Position#)
  632.                       Colors:ColorCode = Sub(Sty:StyleRecord,Position#,FindComma#-Position#)
  633.  
  634.                       Position#        = FindComma# + 1
  635.                       FindComma#       = Instring(',',Sty:StyleRecord,1,Position#)
  636.                       Colors:MonoCode  = Sub(Sty:StyleRecord,Position#,FindComma#-Position#)
  637.  
  638.                       Position#        = FindComma# + 1
  639.                       FindComma#       = Len(Sty:StyleRecord)-FindComma#
  640.                       Colors:Desc      = Sub(Sty:StyleRecord,Position#,FindComma#-Position#)
  641.  
  642.                       If Clip(Colors:Desc) <> '' Then
  643.                          Add(Colors:Queue)
  644.                  . .  .
  645.                  Close(StylesFile)
  646.                  Return
  647.  
  648. OMIT('╝')
  649. ╔════════════════════════════════════════════════════════════════════════════╗
  650. ║ SaveStylesFile - Writes back the Style File from a Table                   ║
  651. ╚════════════════════════════════════════════════════════════════════════════╝
  652.  
  653. SaveStylesFile   PROCEDURE
  654.  
  655.                  Code
  656.  
  657.                  Open(StylesFile)
  658.                  If Error() then Stop('Error Openning File:'&StyleFileName).
  659.  
  660.                  Empty(StylesFile)
  661.                  If Error() then Stop('Error Emptying File:'&StyleFileName).
  662. !
  663. !                Write out any Main Comments to Start With
  664. !                ------------------------------------------------------------
  665. !
  666.                  Loop Ptr# = 1 to Records(Comment:Queue)
  667.                    Get(Comment:Queue,Ptr#)
  668.                    If Sub(Comment:Desc,1,1) = '!' then
  669.                       Sty:StyleRecord = Comment:Desc
  670.                       Add(StylesFile)
  671.                  . .
  672. !
  673. !                Write out the Styles Information
  674. !                ------------------------------------------------------------
  675. !
  676.                  Loop Ptr# = 1 to Records(Colors:Queue)
  677.                    Get(Colors:Queue,Ptr#)
  678.                    Sty:StyleRecord = Colors:Number&','&Colors:ColorCode&','&Colors:MonoCode&','&Colors:Desc
  679.                    Add(StylesFile)
  680.                  .
  681. !
  682. !                Write out any Default Comments to End With
  683. !                ------------------------------------------------------------
  684. !
  685.                  Loop Ptr# = 1 to Records(Comment:Queue)
  686.                    Get(Comment:Queue,Ptr#)
  687.                    If Sub(Comment:Desc,1,1) = '*' then
  688.                       Sty:StyleRecord = Comment:Desc
  689.                       Add(StylesFile)
  690.                  . .
  691.                  Close(StylesFile)
  692.                  Free(Colors:Queue)
  693.                  Free(Comment:Queue)
  694.                  GetStyles(StyleFileName)
  695.                  Return
  696. OMIT('╝')
  697. ╔════════════════════════════════════════════════════════════════════════════╗
  698. ║ GetColorsDesc - Returns a String Value for the COlor Description           ║
  699. ╚════════════════════════════════════════════════════════════════════════════╝
  700.  
  701. GetColorDesc     Function(Color:Foreground,Color:Background)
  702. Color:Names      GROUP
  703.                    STRING('Black       Blue        Green       Cyan        Red         ')
  704.                    STRING('Magenta     Brown       White       Gray        LightBlue   ')
  705.                    STRING('LightGreen  LightCyan   LightRed    LightMagentaYellow      ')
  706.                    STRING('BrightWhite ')
  707.                  .
  708. Color:Array      String(12),Dim(16),Over(Color:Names)
  709.  
  710.                 CODE
  711.                 Color:Foreground += 1
  712.                 Color:Background += 1
  713.                 RETURN(Clip(Color:Array[Color:ForeGround])&' on '&Color:Array[Color:BackGround])
  714.  
  715. OMIT('╝')
  716. ╔════════════════════════════════════════════════════════════════════════════╗
  717. ║ DisplayColorDesc - Displays at the Specified Location a Color Description  ║
  718. ╚════════════════════════════════════════════════════════════════════════════╝
  719.  
  720. DisplayColorDesc PROCEDURE(Location:Row,Location:Col,Location:Color)
  721.  
  722.                  Code
  723.                  SetColor(Location:Color)
  724.                  Show(Location:Row,Location:Col,' '&Format(Location:Color,@n_3),@s4)
  725.                  ForeGround# = ForeColor(Location:Row,Location:Col)
  726.                  BackGround# = BackColor(Location:Row,Location:Col)
  727.                  Show(Location:Row,Location:Col+4,' '&GetColorDesc(ForeGround#,BackGround#),@s31)
  728.                  SetColor
  729.                  Return
  730.